#include "TCPserver.hpp"
using namespace std;

int main()
{
    cout << "服务器启动中~" << endl;
    TcpServer server;
    // if(!server.start())
    // {
    //     std::cerr << "服务器启动失败~" << std::endl;
    //     return -1;
    // }
    // cout << 2;
    // std::cerr << "[Main] Program started." << std::flush; // 调试点 A
    // std::cerr << "[Main] Before creating TcpServer object..." << std::flush; // 调试点 B
    // TcpServer server; // 我们知道这行会执行构造函数并成功返回
    // std::cerr << "[Main] After creating TcpServer object." << std::flush; // 调试点 C - 关键！看这行是否打印
    // std::cerr << "[Main] Before printing 1..." << std::flush; // 调试点 D
    // std::cerr << 1 << std::flush; // 使用 cerr 和 flush
    // std::cerr << " [Main] After printing 1." << std::endl; // 调试点 E - 看看数字 1 和这行是否打印
    // std::cerr << "[Main] Before server.start()..." << std::flush; // 调试点 F
    if(!server.start())
    {
        std::cerr << "服务器启动失败~" << std::endl;
        return -1;
    }
    //     std::cerr << "[Main] After server.start()." << std::flush; // 调试点 G
    //     std::cerr << "[Main] Before printing 2..." << std::flush; // 调试点 H
    //     std::cerr << 2 << std::endl; // 调试点 I
    // // ... (代码打印 2 之后) ...
    //     std::cerr << "[Main] Entering while(1) loop..." << std::endl; // <--- 添加
    // while (1)
    // {
    //     std::cerr << "[Main] Calling acceptclient()..." << std::flush; // <--- 添加
    //     int clientfd = server.acceptclient();
    //     std::cerr << "[Main] acceptclient() returned: " << clientfd << std::endl; // <--- 添加
    //     if (clientfd < 0)
        // ...
    // }

    while (1)
    {
        int clientfd = server.acceptclient();
        if (clientfd < 0)
        {
            std::cerr << "客户端连接失败~" << std::endl;
            continue;
        }
        std::cout << "客户端连接成功~" << std::endl;

        // 接收数据
        string msg;
        if (server.recvMsg(clientfd, msg))
        {
            cout << "recvMsg: " << msg << endl;
        }
        else
        {
            std::cerr << "接收数据失败~" << std::endl;
            continue;
        }

        // 发送数据
        if (server.sendMsg(clientfd, msg))
        {
            cout << "sendMsg: " << msg << endl;
        }
        else
        {
            std::cerr << "发送数据失败~" << std::endl;
            continue;
        }

        // 关闭客户端连接
        server.closeclient(clientfd);
        std::cout << "客户端连接关闭~" << std::endl;
    }

    // 关闭服务器
    server.stop();
    std::cout << "服务器关闭~" << std::endl;
    return 0;
}